<?php

/* 
--------------------------------------------------------------------------------------------------------
 Funcion para la construccion del query que inserta o actualiza datos en la base SQL
 Parametros: 
  $id_principal: el valor id de la tabla principal (si existe, sera una actualizacion, sino, un insert) 
	$tabla: nombre de la tabla donde se realiza la inserción o actualización
	$condicion: clausula where que contiene la condición para cuando se realiza un update
	$tipoSql: 0 para sql server y 1 para mysql
	$bitacora : 1 para ejecutar la bitacora y 0 para no ejecutarla
--------------------------------------------------------------------------------------------------------
*/ 
function querySQL($id_principal,$tabla, $condicion,$tipoSql=0,$bitacora = 0, $link, $matriz){

	$dHoy = date("Ymd H:i:s");
	if (!$id_principal > 0) {		
		$accion = 1;	
		// Construye nombres de campos 
		$insert = "INSERT INTO $tabla (";
		$valores = " VALUES (";
		$query = mssql_query("select * from $tabla",$link);
		while($field = mssql_fetch_field($query)){
			$cCampo = $field->name;
			if($field->type == "char" or $field->type == "datetime") $com = "'"; else $com = "";
			foreach($matriz as $valor => $x){
				$campoValor = "$".$cCampo;
				eval("\$campoValor = \"$campoValor\";");
				if($cCampo == $valor and $campoValor != ''){
					$insert .= $cCampo.",";
					if($field->type == "datetime")
						$valores .= $com.formatofecha($campoValor)."$com,";
					else
						$valores .= $com.$campoValor."$com,";
				}
			}
		}
		$insert .= " fCreacion)";
		$valores .= "'$dHoy')";		
		$sql = $insert.$valores;
		
	}else{
	
		$accion = 2;
		// Construye nombres de campos 
		$update = "UPDATE $tabla SET ";
		$query = mssql_query("select * from $tabla",$link);
		while($field = mssql_fetch_field($query)){
			$cCampo = $field->name;
			if($field->type == "char" or $field->type == "datetime") $com = "'"; else $com = "";
			foreach($matriz as $valor => $x){
				$campoValor = "$".$cCampo;
				eval("\$campoValor = \"$campoValor\";");
				if($cCampo == $valor and $campoValor != '' and $cCampo != 'id_principal' and $cCampo != 'id_unidad'){
					if($field->type == "datetime") {
						$valores = $com.formatofecha($campoValor)."$com,";
					}else{
						$valores = $com.$campoValor.$com.",";
					}
					$sql .= $cCampo." = ".rtrim($valores);
				}
			}
		}
	echo $sql;
		// quita ultima coma
		$sql = substr($sql,0,-1);
		
		$sql = $update.$sql.$condicion;
	
	}
	
	echo $sql;
	$ejecutaQuerys = mssql_query($sql,$link) or die(mssql_get_last_message());
	
	
	// si inserto un nuevo registro, guarda el id principal
	if(!$id_principal){
		$sqllast="SELECT IDENT_CURRENT('$tabla')";
		$res = mssql_query($sqllast,$link) or die(mssql_get_last_message());
		list($last) = mssql_fetch_array($res);
	}else{
		$last = $id_principal;
	}
	//---------------------------------------------------------------------------------------------
	// Agrega registro a la bitacora de seguridad
	if($bitacora == 1){
		bitacora($last,$tabla,$accion,$link);
	}
		
	// --------------------------------------------------------------------------------------------
	return $last;
}

/*
TERMINA FUNCIÓN DE CONSTRUCCIÓN DE QUERYS
*/

?>